﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>

typedef int SListDataType;
typedef struct SinglyListNode
{
	SListDataType data; //节点的数据
	struct SinglyListNode* next; //下一个节点的地址
}SLNode;


//打印链表数据
void SLPrint(const SLNode** pphead);

//头插
void SLPustfront(SLNode** pphead, SListDataType data);

//头删
void SLPopfront(SLNode** pphead);

//尾插
void SLPustBack(SLNode** pphead, SListDataType data);

//尾删
void SLPopBack(SLNode** pphead);

//查找,找到就返回对应节点的指针，没找到就返回NULL
SLNode* SLFind(SLNode** pphead, SListDataType data);

//在指定位置之前插⼊数据
void SLInsert(SLNode** pphead, SLNode* pos, SListDataType data);

//删除pos结点
void SLErase(SLNode** pphead, SLNode* pos);


//在指定位置之后插⼊数据
void SLInsertAfter(SLNode* pos, SListDataType data);

//删除pos之后的结点
void SLEraseAfter(SLNode* pos);

//链表的销毁
void SLDestroy(SLNode** pphead);
